1. The Field of the Invention
This invention relates to computer software and, more particularly, to novel systems and methods for distributing and relocating computer software and data across a computer network.
2. The Background Art
In recent years there has been a great increase in the amount of computer technology that is involved in daily life. In today""s world, computer technology is involved in many aspects of a person""s day. Many devices being used today by consumers have a small computer inside of the device. These small computers come in varying sizes and degrees of sophistication. These small computers include everything from one microcontroller to a fully-functional complete computer system. For example, these small computers may be a one-chip computer, such as a microcontroller, a one-board type of computer, such as a controller, a typical desktop computer, such as an IBM-PC compatible, etc.
The small computers, (which can be rather large computers depending on the particular need which is being met by the computer), almost always have one or more processors at the heart of the computer. The processor(s) usually are interconnected to different external inputs and outputs and function to manage the particular device. For example, a processor in a vending machine for soda pop may be connected to the buttons used to select the pop, to the switch that allows a pop to drop down to a user, and to lights to indicate that the machine does not have any more pop of a particular variety.
Computer technology is involved in many aspects of daily life. Many appliances, devices, etc., include one or more small computers. For example, refrigerators, telephones, typewriters, automobiles, vending machines, and many different types of industrial equipment all have small computers or processors inside of them. Computer software runs the processors of these computers and tells the processors what to do to carry out certain tasks. For example, the computer software running on a processor in a vending machine may cause a soda pop to drop to a user when the correct change. has been entered by a user.
These types of small computers that are a part of a device, appliance, tool, etc., are often referred to as embedded systems. The term xe2x80x9cembedded systemxe2x80x9d usually refers to computer hardware and software that is part of a larger system. Embedded systems usually do not have typical input and output devices such as a keyboard, mouse, and/or monitor. Usually, at the heart of each embedded system is one or more processor(s).
Typically the embedded systems used today with various appliances, devices, etc., do not have a lot of storage capability. As a result, the amount of data that can be stored on the embedded systems is limited. With only limited storage, an embedded system may not have as many features and capabilities as it could have if it had more available storage. Memory is often conserved in these embedded systems that monitor, control and otherwise use electronic devices.
Almost all desktop computer systems include memory management capabilities at, the processor level (hardware), firmware level (the software embedded into the hardware), and at the operating system level. However, in many embedded devices, these types of memory management capabilities are not available. For example, many of the embedded environments include an 8-bit or 16-bit microcontroller, where no substantial operating system or memory management features are present. In these types of environments, any program code is typically developed and loaded onto the embedded device by the manufacture before the device is shipped, after which software upgrades are rarely if ever even contemplated.
Because many embedded devices do not have extensive memory management capabilities, it is often difficult to easily upgrade the software, upgrade modules, upgrade components and/or to add new software, new components, new modules, new features, new extensions, etc.
In view of the foregoing, it is an object of the present invention to provide a system and methods for preparing software for a computer.
Consistent with the foregoing object, and in accordance with the embodiments as embodied and broadly described herein, a system for preparing program code for a first computer, wherein the system is implemented on a second computer, includes a relocating module that is adapted to relocate program code by modifying locations in the program code identified by location data. The modifications made by the relocating module are based on a memory address. The system will operate on program code for the first computer, where the program code is stored on the second computer. To relocating module is provided the memory address that identifies a memory location in the first computer. The memory address is suitable as a basis for modifying the program code. The relocating module is also provided with location data that identifies locations in the program code to be adjusted based on the memory address.
A system made in accordance with the disclosed embodiments may optionally include memory usage information of the first computer from which the memory address can be derived. In addition, the system may also include a list that includes the location data. Optionally, the memory address may be obtained from the first computer.
The second computer may also include a communication module for obtaining the memory address and for communicating the modified program code to the first computer.
A method practiced in accordance with the disclosed embodiments may include the steps of obtaining the program code from a storage device in electronic communication with the second computer; obtaining a memory address identifying a memory location in the first computer, where the memory address is suitable as a basis for modifying the program code; obtaining location data that identifies locations in the program code to be adjusted based on the memory address; and modifying the locations in the program code identified by the location data, by using the memory address and by using the location data, where the modifying step is accomplished at the second computer.
One or more computer programs for implementing the described systems and/or methods may be embodied in a computer-readable medium. The computer-readable medium may be a data transmission medium.
The embodiments disclosed provide systems and methods for preparing program code for a first computer where the system and/or methods are implemented on a second computer.
The presently preferred embodiments use a minimal set of software routines for accessing storage on an embedded device (EEPROM, FLASH, battery backed-up RAM, etc.), while providing a substantial portion of the higher-level (and larger)memory-management software components on a computer connected to the embedded device(s). Thus, the preferred embodiments allow an embedded device, its capabilities and/or its features to be upgraded or enhanced.